﻿///////////////////////////////////////////////////////////////////////////////
//
// wxFormBuilder - A Visual Dialog Editor for wxWidgets.
// Copyright (C) 2005 José Antonio Hurtado
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
//
// Written by
//   Ryan Mulder - rjmyst3@gmail.com
//
///////////////////////////////////////////////////////////////////////////////
#ifndef WXFBEXCEPTION
#define WXFBEXCEPTION

#include <QString>

/**
Exception class for wxFormBuilder
*/
class wxFBException
{
public:
    explicit wxFBException( const QString& what )
	:
	m_what(what)
	{}

	virtual ~wxFBException() = default;

    virtual const QChar* what() const throw()
	{
        return m_what.unicode();
	}

private:
   QString m_what;
};

/**
This allows you to stream your exceptions in.
It will take care of the conversion	and throwing the exception.
*/
//#define THROW_WXFBEX( message )																								\
//	{																														\
//    QString hopefullyThisNameWontConflictWithOtherVariables;																\
//    QString hopefullyUniqueFile(__FILE__, wxConvUTF8);																		\
//    hopefullyUniqueFile = hopefullyUniqueFile.substr(hopefullyUniqueFile.find_last_of(("\\/")) + 1);						\
//    hopefullyThisNameWontConflictWithOtherVariables << message << (" <") << hopefullyUniqueFile << ("@");				\
//    hopefullyThisNameWontConflictWithOtherVariables << QString::Format( ("%i"), __LINE__ ) << (">");					\
//	throw wxFBException( hopefullyThisNameWontConflictWithOtherVariables );													\
//	}

#define THROW_WXFBEX( message )

#endif //WXFBEXCEPTION
